﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Capa_Dominio;
using Capa_Negocio.Gestionar_Instrumentos;

namespace Studio7i.Controllers.Gestionar_Instrumentos
{
    public class InstrumentosMusicalesController : Controller
    {
        //
        #region Dependencias que se inyectan con Spring.NET
        IAdministrarInstrumentosMusicales AdminServiceInstrumentos = null;
       
        #endregion 
        // GET: /InstrumentosMusicales/

        public ActionResult Index()
        {
            ICollection<InstrumentosMusicales> instrumentos = AdminServiceInstrumentos.ListarInstrumentos();
            TempData["Marca"] = ListaMarca();
            TempData["Modelo"] = ListarModelo();
            TempData["Tipo"] = ListarTipoInst();
            return View(instrumentos);
        }

        private ICollection<SelectListItem> ListaMarca()
        {
            ICollection<SelectListItem> listMarca = new List<SelectListItem>();
            listMarca.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (MarcaInstrumento dis in AdminServiceInstrumentos.ListaMarca())
                listMarca.Add(new SelectListItem()
                {
                    Value = dis.CodigoMarca.ToString(),
                    Text = dis.NombreMarca
                });
            return listMarca;
        }
        private ICollection<SelectListItem> ListarModelo()
        {
            ICollection<SelectListItem> modelo = new List<SelectListItem>();
            modelo.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (ModeloInstrumento dis in AdminServiceInstrumentos.ListaModelo())
                modelo.Add(new SelectListItem()
                {
                    Value = dis.CodigoModelo.ToString(),
                    Text = dis.NombreModelo
                });
            return modelo;
        }
        private ICollection<SelectListItem> ListarTipoInst()
        {
            ICollection<SelectListItem> tipo = new List<SelectListItem>();
            tipo.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (TipoInstrumento dis in AdminServiceInstrumentos.ListarTipoInstrumento())
                tipo.Add(new SelectListItem()
                {
                    Value = dis.CodigoTipoInstrumento.ToString(),
                    Text = dis.NombreTipoInstrumento
                });
            return tipo;
        }
        //
        // GET: /InstrumentosMusicales/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /InstrumentosMusicales/Create

        public ActionResult Create()
        {
            TempData["Marca"] = ListaMarca();
            TempData["Modelo"] = ListarModelo();
            TempData["Tipo"] = ListarTipoInst();
            return View();
        } 

        //
        // POST: /InstrumentosMusicales/Create

        [HttpPost]
        public ActionResult Create(FormCollection formulario)
        {
            try
            {
                // TODO: Add insert logic here
                // TODO: Add insert logic here
                int codigoMarca = int.Parse(formulario["codMarca"]);
                int codigoModelo = int.Parse(formulario["codModelo"]);
                int codigoTipo = int.Parse(formulario["codTipo"]);
                string anno = formulario["AnnoFabricacion"];
                string nombre = formulario["NombreInstrumento"];
                decimal costoAlquiler = decimal.Parse(formulario["CostoAlquiler"]);
                string caracteristicas = formulario["Caracteristicas"];

                int cantidad = int.Parse(formulario["CantidadInstrumentos"]);
                bool disponibilidad = true;
                InstrumentosMusicales instrumentoCreado = AdminServiceInstrumentos.InscribirInstrumentos(nombre, codigoMarca, codigoModelo
                    , codigoTipo, anno, costoAlquiler, caracteristicas, cantidad, disponibilidad, true);
                TempData["mensaje"] = "Instrumento " + instrumentoCreado.CodigoInstrumento + " creado exitosamente";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message); // Agregamos el error a mostrarse
                return View("Create"); // Problemas! De nuevo a Creacion.aspx
            }
        }
        
        //
        // GET: /InstrumentosMusicales/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /InstrumentosMusicales/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /InstrumentosMusicales/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /InstrumentosMusicales/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
